/*
 * Hlavni.c
 *
 *  Created on: 6.11.2012
 *      Author: Z183797
 */
#include <stdio.h>
#include <avr/io.h>
#include <stdlib.h>
#include <util/delay.h>
#include <avr/interrupt.h>
//Lokalni header
#include "Hlavni.h"
#include "UART.h"
#include "data.h"

char prijaty_znak;
ISR(USART_RXC_vect) {
	if (flag == 1) {
		nactiData(UDR);
	} else if ((flag == 0) && (validData(UDR))) {
		flag = 1;
		write_Character((char)flag);
		//cli();          // Vypnout globalne interrupty / otazka zda stale zapinat vzpinat??
	}

}

int main(void) {
	stav = INIT;		// Po startu programu musi jako prvni probehnout INIT

	while (1) {
		switch (stav) {
			case INIT:
				inicialiazace();
				write_UART("INIT");
				break;
			case PROBLEM:
			flag=3;
			// Prip. selhani initu atd.
				break;
			case ALARM:
			//Generace alarmu;
				break;
			case NOVA_DATA:
#ifndef FUNKCE
				ulozeniDat(ptr_reference);
#define FUNKCE
#else
				ulozeniDat(ptr_aktualni);
#endif
				break;
			case DATA:
				kontrolaDat();
				break;
			case NEPLATNA_DATA:
				blikLED();
				write_UART("Cekame na data");
				break;
			default:
				break;
		}
	}

}

void inicialiazace()
{
	init_Ports();
	init_UART();
	sei();
	//<! Global interrupt
	ptr_reference = &pozice[0];      //<! Pointer na referncni polohu
	ptr_aktualni = &pozice[1];           //<! Pointer na aktualni polohu
	stav= NEPLATNA_DATA;
}

/////////////////////////////
//! Funkce: set_Ports      //
//! Inicializace portu     //
/////////////////////////////
void init_Ports() {
	DDRB |= (1 << PB0);           //<! Aktivovani pinu PB0
	PORTB = (1 << PB0);            //<! Nastaveni do vysoke urovne
}

/////////////////////////////
//! Funkce: blik_LED       //
//! Blikani LED diodou     //
/////////////////////////////
void blikLED() {
	PORTB = (0 << PB0);
	_delay_ms(1000);
	//PORTB = (1 << PB0);
	//_delay_ms(1000);
}
/////////////////////////////
//! Funkce: Interrupt       //
//! Blikani Interrupt UART  //
/////////////////////////////

